"""
基础使用示例
"""
import os
from data_embedding.services.knowledge_base import KnowledgeBaseService


def basic_example():
    """基础使用示例"""
    print("=== Data Embedding 基础使用示例 ===")
    
    # 1. 创建知识库
    kb = KnowledgeBaseService("example_kb")
    print(f"创建知识库: {kb.kb_name}")
    
    # 2. 添加文档（需要准备一个测试文件）
    test_file = "test_document.txt"
    
    # 创建测试文档
    with open(test_file, "w", encoding="utf-8") as f:
        f.write("""
        人工智能（Artificial Intelligence，AI）是计算机科学的一个分支，
        它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。
        该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
        
        人工智能从诞生以来，理论和技术日益成熟，应用领域也不断扩大，
        可以设想，未来人工智能带来的科技产品，将会是人类智慧的"容器"。
        人工智能可以对人的意识、思维的信息过程的模拟。
        人工智能不是人的智能，但能像人那样思考、也可能超过人的智能。
        """)
    
    # 添加文档到知识库
    result = kb.add_document(test_file)
    print(f"添加文档结果: {result}")
    
    # 3. 搜索相似内容
    query = "什么是人工智能？"
    results = kb.search(query, top_k=3)
    
    print(f"\n搜索查询: {query}")
    print(f"搜索结果数量: {len(results)}")
    
    for i, result in enumerate(results, 1):
        print(f"\n结果 {i}:")
        print(f"内容: {result['content'][:100]}...")
        print(f"相似度分数: {result['score']:.4f}")
        print(f"元数据: {result['metadata']}")
    
    # 4. 获取知识库信息
    info = kb.get_info()
    print(f"\n知识库信息: {info}")
    
    # 5. 清理
    os.remove(test_file)
    kb.clear()
    print("\n示例完成！")


def advanced_example():
    """高级使用示例"""
    print("\n=== Data Embedding 高级使用示例 ===")
    
    # 1. 创建自定义配置的知识库
    kb = KnowledgeBaseService(
        knowledge_base_name="advanced_kb",
        vector_store_type="faiss",
        embedding_model="text2vec-chinese"
    )
    
    # 2. 创建多个测试文档
    documents = [
        ("doc1.txt", "机器学习是人工智能的一个重要分支，它使计算机能够在没有明确编程的情况下学习。"),
        ("doc2.txt", "深度学习是机器学习的一个子集，它使用多层神经网络来模拟人脑的学习过程。"),
        ("doc3.txt", "自然语言处理是人工智能的一个领域，专注于计算机理解和生成人类语言。"),
        ("doc4.txt", "计算机视觉是人工智能的一个分支，致力于让计算机能够理解和处理图像信息。"),
    ]
    
    # 创建文档文件
    for filename, content in documents:
        with open(filename, "w", encoding="utf-8") as f:
            f.write(content)
    
    # 3. 批量添加文档
    file_paths = [filename for filename, _ in documents]
    results = kb.add_documents(file_paths)
    
    print("批量添加文档结果:")
    for i, result in enumerate(results, 1):
        print(f"文档 {i}: {'成功' if result['success'] else '失败'}")
        if not result['success']:
            print(f"  错误: {result['error']}")
    
    # 4. 多种搜索查询
    queries = [
        "什么是机器学习？",
        "神经网络的应用",
        "计算机如何处理图像",
        "自然语言处理技术"
    ]
    
    for query in queries:
        print(f"\n搜索查询: {query}")
        results = kb.search(query, top_k=2, score_threshold=0.3)
        
        for i, result in enumerate(results, 1):
            print(f"  结果 {i}: {result['content'][:50]}... (分数: {result['score']:.4f})")
    
    # 5. 清理
    for filename, _ in documents:
        os.remove(filename)
    kb.clear()
    print("\n高级示例完成！")


if __name__ == "__main__":
    basic_example()
    advanced_example() 